home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1996 June / macformat-038.iso / Shareware in MacFormat / Creator Changer 2.5 / Code & Resource / Creator Changer.init.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-10-20  |  6.7 KB  |  241 lines  |  [TEXT/KAHL]

  1. /**********************************************************************
  2.  *    This file contains the functions which initialize the toolbox
  3.  *    and check to see if System 7 is present, and loads the error 
  4.  *    strings into memory.
  5.  **********************************************************************/
  6.  
  7. #include "QDOffscreen.h"
  8. #include "Creator Changer.h"
  9. #include "Creator Changer.init.h"
  10. #include "AppleEvents.h"
  11. #include "Folders.h"
  12.  
  13.  
  14. /**********************************************************************
  15.  *    Function Init_Toolbox(), this function initializes the Macintosh 
  16.  *    toolbox so that all of the parts of the program will work.
  17.  **********************************************************************/
  18.  
  19. void Init_Toolbox(void)
  20.     {
  21.         
  22.     EventRecord    temp_event;
  23.     
  24.     InitGraf(&qd.thePort);
  25.     InitFonts();
  26.     FlushEvents(everyEvent, 0);
  27.     InitWindows();
  28.     InitMenus();
  29.     TEInit();
  30.     InitDialogs(NIL_PTR);
  31.     InitCursor();
  32.     MaxApplZone();
  33.         
  34.     EventAvail(everyEvent, &temp_event);
  35.     EventAvail(everyEvent, &temp_event);
  36.     EventAvail(everyEvent, &temp_event);
  37.     
  38.     About_Storage=NewPtr(sizeof(DialogRecord));
  39.     Auto_Storage=NewPtr(sizeof(DialogRecord));
  40.     Edit_Storage=NewPtr(sizeof(DialogRecord));
  41.     Chng_Storage=NewPtr(sizeof(DialogRecord));
  42.     
  43.     All_Done=FALSE;
  44.     
  45.     }
  46.  
  47.  
  48.  
  49. /**********************************************************************
  50.  *    Function Get_Error_Messages(), this function gets the error
  51.  *    messages that are stored in the resources.
  52.  **********************************************************************/
  53.  
  54. void Get_Strings(void)
  55.     {
  56.     
  57.     GetIndString( Types_Error_1,  ERROR_STRING_LIST, TYPES_ERROR_1  );
  58.     GetIndString( Types_Error_2,  ERROR_STRING_LIST, TYPES_ERROR_2  );
  59.     GetIndString( Descr_Error,    ERROR_STRING_LIST, DESC_ERROR     );
  60.     GetIndString( Bad_Item_Error, ERROR_STRING_LIST, BAD_ITEM_ERROR );
  61.     GetIndString( Bad_CF_Type_1,  ERROR_STRING_LIST, BAD_CF_TYPE_1  );
  62.     GetIndString( Bad_CF_Type_2,  ERROR_STRING_LIST, BAD_CF_TYPE_2  );
  63.     GetIndString( Bad_CF_Type_3,  ERROR_STRING_LIST, BAD_CF_TYPE_3  );
  64.     GetIndString( Bad_CF_Type_4,  ERROR_STRING_LIST, BAD_CF_TYPE_4  );
  65.     GetIndString( Pref_File_Name, MISC_STRING_LIST,  PREF_FILE_NAME );
  66.     
  67.     }
  68.  
  69.  
  70.  
  71. /**********************************************************************
  72.  *    Function Check_Sys_Type(), this function checks to see if System
  73.  *    seven or later is present, if it isn't then the program quits.
  74.  **********************************************************************/
  75.  
  76. void Check_Sys_Type(void)
  77.     {
  78.     
  79.     short        sys_7=0x0700;
  80.     short        vers_requsted=1;
  81.     SysEnvRec    the_environ;
  82.     
  83.     SysEnvirons(vers_requsted, &the_environ);
  84.     
  85.     if(the_environ.systemVersion>=sys_7) All_Done=FALSE;
  86.     else
  87.         {
  88.         GetIndString(Sys7_Error_1, ERROR_STRING_LIST, SYS7_ERROR_1);
  89.         GetIndString(Sys7_Error_2, ERROR_STRING_LIST, SYS7_ERROR_2);
  90.         Do_Error(Sys7_Error_1, EMPTY_STR, Sys7_Error_2, EMPTY_STR);
  91.         ExitToShell();
  92.         }
  93.     
  94.     }
  95.  
  96.  
  97. /**********************************************************************
  98.  *    Function Open_Preferences(), this function opens the preference
  99.  *    file that is used to set creator types.
  100.  **********************************************************************/
  101.  
  102. void Open_Preferences(void)
  103.     {
  104.     
  105.     OSErr            file_Err;
  106.     pref_types        **pt_handle[4];
  107.     auto_chng        **ac_handle[3];
  108.     global_prefs    **global;
  109.     Handle            **pref_string, **TMPL_handle[3], **global_vals;
  110.     int                i;
  111.  
  112.     CreatorChangerApp=CurResFile();
  113.     
  114.     file_Err=FindFolder(kOnSystemDisk, kPreferencesFolderType, kDontCreateFolder, &Pref_VRef, &Pref_Dir_ID);
  115.     if(file_Err==noErr) file_Err=FSMakeFSSpec(Pref_VRef, Pref_Dir_ID, Pref_File_Name, &Pref_Spec);
  116.     if(file_Err==fnfErr)
  117.         {
  118.         FSpCreateResFile(&Pref_Spec, 'CPrf', kPreferencesFolderType, -1);
  119.  
  120.         CreatorChangerPref=FSpOpenResFile(&Pref_Spec, 3);
  121.         
  122.         pref_string=(Handle **)GetResource('STR ', -16397);
  123.         DetachResource((Handle)pref_string);
  124.         
  125.         global_vals=(Handle **)GetResource('pref', Strt_Rsrc+7);
  126.         DetachResource((Handle)global_vals);
  127.         
  128.         for(i=0;i<=3;i++)
  129.             {
  130.             TMPL_handle[i+1]=(Handle **)GetResource('TMPL', Strt_Rsrc+i);
  131.             DetachResource((Handle)TMPL_handle[i+1]);
  132.             }
  133.         
  134.         for(i=0;i<=3;i++)
  135.             {
  136.             pt_handle[i+1]=(pref_types **)GetResource('pref', Strt_Rsrc+i);
  137.             DetachResource((Handle)pt_handle[i+1]);
  138.             }
  139.         
  140.         for(i=4;i<=6;i++)
  141.             {
  142.             ac_handle[i-3]=(auto_chng **)GetResource('pref', Strt_Rsrc+i);
  143.             DetachResource((Handle)ac_handle[i-3]);
  144.             }
  145.  
  146.         UseResFile(CreatorChangerPref);
  147.         
  148.             AddResource((Handle)global_vals, PREF_GL, 128, NIL_PTR);
  149.             
  150.             AddResource((Handle)TMPL_handle[1], 'TMPL', 128, "\pCCpt");
  151.             AddResource((Handle)TMPL_handle[2], 'TMPL', 129, "\pCCgl");
  152.             AddResource((Handle)TMPL_handle[3], 'TMPL', 130, "\pCCac");
  153.             
  154.             AddResource((Handle)pref_string, 'STR ', -16397, NIL_PTR);
  155.             
  156.             for(i=0;i<=3;i++) AddResource((Handle)pt_handle[i+1], PREF_PT, Strt_Rsrc+i, (**pt_handle[i+1]).Description);
  157.             for(i=0;i<=2;i++) AddResource((Handle)ac_handle[i+1], PREF_AC, Strt_Rsrc+i, (**ac_handle[i+1]).Name);
  158.             
  159.             UpdateResFile(CreatorChangerPref);
  160.             
  161.             ReleaseResource((Handle)pref_string);
  162.             ReleaseResource((Handle)global_vals);
  163.             
  164.             for(i=1;i<=3;i++) ReleaseResource((Handle)TMPL_handle[i]);
  165.             for(i=1;i<=4;i++) ReleaseResource((Handle)pt_handle[i]);
  166.             for(i=1;i<=3;i++) ReleaseResource((Handle)ac_handle[i]);
  167.  
  168.             Num_pt=CountResources(PREF_PT);
  169.             Num_ac=CountResources(PREF_AC);
  170.             
  171.             global=(global_prefs **)GetResource(PREF_GL, 128);
  172.             Global=global;
  173.             
  174.          UseResFile(CreatorChangerApp);
  175.         }
  176.     else
  177.         {
  178.         CreatorChangerPref=FSpOpenResFile(&Pref_Spec, 3);
  179.  
  180.         UseResFile(CreatorChangerPref);
  181.             Num_pt=CountResources(PREF_PT);
  182.             Num_ac=CountResources(PREF_AC);
  183.             global=(global_prefs **)GetResource(PREF_GL, 128);
  184.             Global=global;
  185.         UseResFile(CreatorChangerApp);
  186.         }
  187.     
  188.     }
  189.  
  190.  
  191.  
  192. /**********************************************************************
  193.  *    Function Set_Up_Menu_Bar(), this function displays the menu bar
  194.  *    for the program. 
  195.  **********************************************************************/
  196.  
  197. void Set_Up_Menu_Bar(void)
  198.     {
  199.     
  200.     Handle    menu_bar;
  201.     
  202.     menu_bar=GetNewMBar(MAIN_MENU_BAR_ID);
  203.     SetMenuBar(menu_bar);
  204.     Apple_Menu=GetMHandle(APPLE_MENU_ID);
  205.     Options_Menu=GetMHandle(OPTIONS_MENU_ID);
  206.     AddResMenu(Apple_Menu, 'DRVR');
  207.     DrawMenuBar();
  208.     
  209.     }
  210.  
  211.  
  212.  
  213. /**********************************************************************
  214.  *    Function Do_Error(), this function does the error routine.
  215.  **********************************************************************/
  216.  
  217. void Do_Error(StringPtr s1, StringPtr s2, StringPtr s3, StringPtr s4)
  218.     {
  219.     
  220.     ParamText(s1, s2, s3, s4);
  221.     Alert(ERROR_ALERT_ID, NIL_PTR);
  222.     
  223.     }
  224.  
  225.  
  226.  
  227. /**********************************************************************
  228.  *    Function Is_Pressed(), this function determine what key is pressed.
  229.  **********************************************************************/
  230.  
  231. Boolean Is_Pressed(unsigned short key)
  232.     {
  233.     
  234.     unsigned char key_mask[16];
  235.  
  236.     GetKeys((long *)key_mask);
  237.     return((key_mask[key>>3]>>(key&7))&1);
  238.     
  239.     }
  240.  
  241.